package com.tbit.uqbike.object.pojo;

import com.tbit.uqbike.constant.CsvConstant;
import com.tbit.uqbike.webmanager.util.csv.annotations.Csv;
import com.tbit.uqbike.webmanager.util.csv.annotations.Sum;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 骑行订单详细表
 *
 * @Author:BUGTian
 * @DATE: 2022/11/11
 */
@Data
public class RideLogDetails implements Serializable {
    /**
     * 骑行订单号
     */
    @Csv(name = "业务订单号", type = CsvConstant.CSV_TYPE_WITHOUT)
    private String orderId;
    /**
     * 运营区域id
     */
    private int accountId;
    /**
     * 品牌id
     */
    private int brandId;
    /**
     * 运营区域名称
     */
    @Csv(name = "运营区域", type = CsvConstant.CSV_TYPE_WITHOUT)
    private String accountName;
    /**
     * 订单类型 1：正常结束 2：欠款补交 3：欠款
     */
    @Csv(name = "订单类型", keys = {"1", "2", "3"}, values = {"正常结束", "欠款补交", "欠款"}, type = CsvConstant.CSV_TYPE_WITHOUT)
    private int orderType;
    /**
     * 支付状态1：已支付，2：未支付
     */
    @Csv(name = "支付状态", keys = {"1", "2"}, values = {"已支付", "未支付"}, type = CsvConstant.CSV_TYPE_WITHOUT)
    private int payStatus;
    /**
     * 用户id
     */
    private int userId;
    /**
     * 用户手机号
     */
    @Csv(name = "用户手机号", type = CsvConstant.CSV_TYPE_WITHOUT)
    private String userPhone;
    /**
     * 姓名
     */
    @Csv(name = "姓名", type = CsvConstant.CSV_TYPE_WITHOUT)
    private String userName;
    /**
     * 车辆id
     */
    @Csv(name = "车辆id", type = CsvConstant.CSV_TYPE_WITHOUT)
    private Integer machineId;
    /**
     * 车辆编号
     */
    @Csv(name = "车辆编号", type = CsvConstant.CSV_TYPE_WITHOUT)
    private String userCode;
    /**
     * 设备编号
     */
    @Csv(name = "设备编号", type = CsvConstant.CSV_TYPE_WITHOUT)
    private String machineNO;
    /**
     * 订单开始时间
     */
    @Csv(name = "订单开始时间", type = CsvConstant.CSV_TYPE_WITHOUT)
    private Date orderStartTime;
    /**
     * 订单结束时间
     */
    @Csv(name = "订单结束时间", type = CsvConstant.CSV_TYPE_WITHOUT)
    private Date orderEndTime;
    /**
     * 里程
     */
    @Sum
    @Csv(name = "里程", type = CsvConstant.CSV_TYPE_WITHOUT)
    private Double mileage;
    /**
     * 支付时间
     */
    @Csv(name = "支付时间", type = CsvConstant.CSV_TYPE_WITHOUT)
    private Date payTime;
    /**
     * 骑行费用
     */
    @Sum
    @Csv(name = "骑行费用", type = CsvConstant.CSV_TYPE_WITHOUT)
    private double cyclingMoney;
    /**
     * 抵扣后骑行费用
     */
    @Sum
    @Csv(name = "抵扣后骑行费用", type = CsvConstant.CSV_TYPE_WITHOUT)
    private double deductionCyclingMoney;
    /**
     * 罚款费用
     */
    @Sum
    @Csv(name = "罚款费用", type = CsvConstant.CSV_TYPE_WITHOUT)
    private double fineMoney;
    /**
     * 抵扣后罚款费用
     */
    @Sum
    @Csv(name = "抵扣后罚款费用", type = CsvConstant.CSV_TYPE_WITHOUT)
    private double deductionFineMoney;
    /**
     * 罚款类型1：站外停车，2：运营区域外停车，3：头盔锁未归还
     */
    @Csv(name = "罚款类型", keys = {"1", "2", "3", "2,3", "1,3"}, values = {"站外停车", "运营区域外停车", "头盔锁未归还", "运营区域外停车、头盔锁未归还", "站外停车、头盔锁未归还"}, type = CsvConstant.CSV_TYPE_WITHOUT)
    private String fineType;
    /**
     * 罚款类型名称
     */
    private String fineTypeName;
    /**
     * 实际支付金额
     */
    @Csv(name = "实际支付金额", type = CsvConstant.CSV_TYPE_WITHOUT)
    @Sum
    private double actualPayMoney;
    /**
     * 卡券抵扣费用
     */
    @Csv(name = "卡券抵扣费用", type = CsvConstant.CSV_TYPE_WITHOUT)
    @Sum
    private double cardDeductionMoney;
    /**
     * 礼品卡抵扣费用
     */
    @Csv(name = "礼品卡抵扣费用", type = CsvConstant.CSV_TYPE_WITHOUT)
    @Sum
    private double giftCardDeductionMoney;
    /**
     * 人工修改订单抵扣费用
     */
    @Csv(name = "人工修改订单抵扣费用", type = CsvConstant.CSV_TYPE_WITHOUT)
    @Sum
    private double peopleModiftDeductionMoney;
    /**
     * 其他抵扣费用
     */
    @Csv(name = "其他抵扣费用", type = CsvConstant.CSV_TYPE_WITHOUT)
    @Sum
    private double otherDeductionMoney;
    /**
     * 订单总费用
     */
    private double deduciontMoney;
    /**
     * 抵扣后总费用
     */
    private double deductionEndMoney;
    /**
     * 商户订单号
     */
    @Csv(name = "商户订单号", type = CsvConstant.CSV_TYPE_WITHOUT)
    private String merchantNO;
    /**
     * 人工修改订单时间
     */
    @Csv(name = "人工修改订单时间", type = CsvConstant.CSV_TYPE_WITHOUT)
    private Date peopleModiftTime;
    /**
     * 操作人id
     */
    private int operatorId;
    /**
     * 操作人手机号码
     */
    @Csv(name = "操作人手机号码", type = CsvConstant.CSV_TYPE_WITHOUT)
    private String operatorPhone;
    /**
     * 操作人名称
     */
    @Csv(name = "操作人名称", type = CsvConstant.CSV_TYPE_WITHOUT)
    private String operatorName;
    /**
     * 订单备注
     */
    @Csv(name = "订单备注", commaReplace = ";", type = CsvConstant.CSV_TYPE_WITHOUT)
    private String remark;
    /**
     * 计费详情
     */
    @Csv(name = "计费详情", commaReplace = ";", type = CsvConstant.CSV_TYPE_WITHOUT)
    private String billingDetails;
    /**
     * 会员卡抵扣费用
     */

    private double vipCard;
    /**
     * 优惠券抵扣费用
     */

    private double couponCard;
    /**
     * 骑行卡抵扣费用
     */

    private double rideCard;

    /**
     * 骑行时长
     */
    @Csv(name = "骑行时长", type = CsvConstant.CSV_TYPE_WITHOUT)
    private String ridingTime;

    /**
     * 分区id
     * */
    private Integer regionId;

    /**
     * 有效骑行（骑行时长大于免费骑行）0大于骑行时长，1小于骑行时长
     * */
    private Integer valid;

}
